//-----------------------------------------------
void DemoTinEdge (HANDLE hLcWnd)
{
double X, Y;
HANDLE hEnt, hTri;
HANDLE hPt0, hPt1, hTri2;
int iEdge, iPt0, iPt1, iTri2, j;
WCHAR szText[256], szEdge[64];
m1:
if (lcWndWaitPoint( hLcWnd, L"Pick TIN triangle", &X, &Y ) == TRUE){
hEnt = lcWndGetEntByPoint2( hLcWnd, X, Y, 0.0 );
if (lcEntType( hEnt, LC_ENT_TIN ) == TRUE){
hTri = lcTIN_TriGetByPos( hEnt, X, Y );
if (hTri != 0){
j = lcPropGetInt( hTri, LC_PROP_TINTR_I );
swprintf( szText, L"Triangle %d\n", j );
for (iEdge=0; iEdge<=2; ++iEdge){
lcTIN_TriGetEdge( hEnt, hTri, iEdge );
// handles
hPt0 = lcPropGetHandle( 0, LC_PROP_G_TIN_PT0 );
hPt1 = lcPropGetHandle( 0, LC_PROP_G_TIN_PT1 );
hTri2 = lcPropGetHandle( 0, LC_PROP_G_TIN_TR );
// indices
iPt0 = lcPropGetInt( hPt0, LC_PROP_TINPNT_I );
iPt1 = lcPropGetInt( hPt1, LC_PROP_TINPNT_I );
if (hTri2 > 0){
iTri2 = lcPropGetInt( hTri2, LC_PROP_TINTR_I );
}else{
iTri2 = -1;
}
if (iTri2 >= 0){
swprintf( szEdge, L"Edge %d - %d contact with Trianle %d", iPt0, iPt1, iTri2 );
}else{
swprintf( szEdge, L"Edge %d - %d don't contact with any trianle", iPt0, iPt1 );
}
wcscat( szText, szEdge );
wcscat( szText, L"\n" );
}
lcWndMessage( hLcWnd, szText, 0 );
}
}else{
goto m1;
}
}
}